package com.duanjc.mergemd.utils;


import com.duanjc.mergemd.bean.DocumentContent;
import com.duanjc.mergemd.constant.FileConsts;

/**
 * 本类用于检查、如后缀是否正确
 *
 * @author cqh
 * @date 2022/04/24 21:08
 */
public class FileCheckUtils {
    /**
     * 检查文件名是否以指定后缀结尾
     *
     * @param fileName   要检查的文件名
     * @param fileSuffix 后缀名
     * @return 文件名不符合要求，返回false
     */
    public static boolean matches(String fileName, String fileSuffix) {
        return isFileSuffix(fileSuffix) && fileName.matches("^.*" + fileSuffix + "$");
    }

    /**
     * 检查后缀是否以 .xxx 的形式结尾，其中 xxx 代表至少一个字母
     *
     * @param fileSuffix 要检查的后缀
     * @return 后缀名不符合要求，返回 false
     */
    public static boolean isFileSuffix(String fileSuffix) {
        return fileSuffix.matches("^\\.[a-zA-Z]+$");
    }

    /**
     * 若路径以斜杆结尾，就去掉；
     * 若 destPath 不以指定后缀结尾，则添加指定后缀
     *
     * @param fileContent 要验证的文件内容
     */
    public static void checkDestPathFormat(DocumentContent fileContent) {
        String destPath = fileContent.getDestPath();
        String srcPath = fileContent.getSrcPath();

        // 去掉路径结尾的的 "\"
        while (srcPath.endsWith(FileConsts.BACKSLASH)) {
            srcPath = srcPath.substring(0, srcPath.length() - 1);
        }
        while (destPath.endsWith(FileConsts.BACKSLASH)) {
            destPath = destPath.substring(0, destPath.length() - 1);
        }

        String suffix = fileContent.getSuffix();
        if (!FileCheckUtils.matches(destPath, suffix)) {
            int index = srcPath.lastIndexOf(FileConsts.BACKSLASH);
            String fileName = srcPath.substring(index);
            destPath += fileName + suffix;
            fileContent.setDestPath(destPath);
        }
    }
}

